package com.bestcem.xm.user.service;


import com.bestcem.xm.common.core.domain.web.ServiceResult;
import com.bestcem.xm.user.service.dto.order.PackOrderStatusDTO;
import com.bestcem.xm.user.service.dto.order.PackWeChatOrderDTO;
import com.bestcem.xm.user.service.dto.user.WxMackOrderDTO;

/**
 * 订单 service
 *
 * @author Linzhijian <zhijian.lin@idiaoyan.com>
 * @version v1.0
 * @date 2022/5/05 13:18
 */
public interface OrderService {

    /**
     * 获取套餐购买支付二维码
     *
     * @param orderDTO
     * @return com.bestcem.xm.util.ServiceResult<java.lang.Object>
     * @author Linzhijian <zhijian.lin@idiaoyan.com>
     * @date 2022/05/30 13:51
     */
    ServiceResult<Object> packWechatMackOrder(PackWeChatOrderDTO orderDTO);

    /**
     * 获取套餐升级微信订单支付状态
     *
     * @param orderNo
     * @return com.bestcem.xm.util.ServiceResult<com.bestcem.xm.user.service.dto.order.PackOrderStatusDTO>
     * @author Linzhijian <zhijian.lin@idiaoyan.com>
     * @date 2022/05/30 13:51
     */
    ServiceResult<PackOrderStatusDTO> getPackOrderStatus(String orderNo);

    /**
     * 官网首页版本购买对公转账确认
     *
     * @param orderId
     * @return com.bestcem.xm.util.ServiceResult<java.lang.String>
     * @author Linzhijian <zhijian.lin@idiaoyan.com>
     * @date 2022/06/07 19:00
     */
    ServiceResult<String> offlineConfirmOrder(String orderId);

    /**
     * 双十一专业版体验
     *
     * @param orderDTO
     * @return com.bestcem.xm.util.ServiceResult<java.lang.Object>
     * @author Linzhijian <zhijian.lin@idiaoyan.com>
     * @date 2022/06/07 19:00
     */
    ServiceResult<Object> trialPackWechatMackOrder(WxMackOrderDTO orderDTO);


    /**
     * 高级版，专业版四折购买
     *
     * @param orderDTO
     * @return com.bestcem.xm.util.ServiceResult<java.lang.Object>
     * @author Linzhijian <zhijian.lin@idiaoyan.com>
     * @date 2022/06/07 19:00
     */
    ServiceResult<Object> discountPackWechatMackOrder(WxMackOrderDTO orderDTO);

    /**
     * 高级版，专业版四折购买 线下支付创建订单
     *
     * @param orderDTO
     * @return com.bestcem.xm.util.ServiceResult<java.lang.Object>
     * @author Linzhijian <zhijian.lin@idiaoyan.com>
     * @date 2022/06/07 19:00
     */
    ServiceResult<Object> discountOfflineMakeOrder(WxMackOrderDTO orderDTO);
}
